// #include <stdio.h>
// #include <string.h>
// #include <unistd.h>
// #include <zmq.h>

// // "ipc:///var/tmp/uts_log.socket"
// // "ipc:///var/tmp/asset_data.socket"
// // "ipc:///tmp/.4report.sock"
// #define IPC_ADDRESS "ipc:///var/tmp/asset_data.socket"

// int main() {
//     // 创建 ZMQ 上下文和套接字
//     void *context = zmq_ctx_new();
//     void *pusher = zmq_socket(context, ZMQ_PUSH);
//     if (!pusher) {
//         perror("zmq_socket failed");
//         return -1;
//     }

//     // 绑定 IPC 地址
//     int rc = zmq_bind(pusher, IPC_ADDRESS);
//     if (rc != 0) {
//         perror("zmq_bind failed");
//         zmq_close(pusher);
//         zmq_ctx_destroy(context);
//         return -1;
//     }

//     printf("Pusher started. Connecting to %s...\n", IPC_ADDRESS);

//     char buffer[8192];
//     int count = 0;
    
//     while (1) {
//         // 构造测试数据
//         snprintf(buffer, sizeof(buffer), "IPC Test Message %d", ++count);
        
//         // 发送消息
//         int bytes = zmq_send(pusher, buffer, strlen(buffer), 0);
//         // int bytes = zmq_send(pusher, buffer, strlen(buffer), ZMQ_DONTWAIT);
//         if (bytes < 0) {
//             perror("zmq_send failed");
//             break;
//         }
        
//         printf("Sent: %s\n", buffer);
//         sleep(1);
//     }

//     // 清理资源
//     zmq_close(pusher);
//     zmq_ctx_destroy(context);
//     return 0;
// }

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <zmq.h>
#include <unistd.h>

#define SOCKET_PATH "ipc:///var/tmp/asset_data.socket"

int main(int argc, char **argv)
{
    // 初始化 ZeroMQ 上下文
    void *context = zmq_ctx_new();
    if (!context) {
        perror("zmq_ctx_new");
        return 1;
    }

    // 创建 PUSH 套接字
    void *socket = zmq_socket(context, ZMQ_PUSH);
    if (!socket) {
        perror("zmq_socket");
        zmq_ctx_destroy(context);
        return 1;
    }

    // 连接到 socket
    int rc = zmq_connect(socket, SOCKET_PATH);
    if (rc != 0) {
        perror("zmq_connect");
        zmq_close(socket);
        zmq_ctx_destroy(context);
        return 1;
    }

    char buffer[8192];
    int count = 0;
    while (1) {
        // 构造测试数据
        snprintf(buffer, sizeof(buffer), "IPC Test Message %d", ++count);
        
        // 发送消息
        int bytes = zmq_send(socket, buffer, strlen(buffer), 0);
        if (bytes < 0) {
            perror("zmq_send failed");
            break;
        }

        // 发送消息
        rc = zmq_send(socket, buffer, strlen(buffer), 0);
        if (rc < 0) {
            perror("zmq_send");
            break;
        } else {
            printf("Sent message: %s\n", buffer);
        }
    
        usleep(1000);
    }

    // 清理资源
    zmq_close(socket);
    zmq_ctx_destroy(context);

    return 0;
}
